繼昨天講解完三個小元件後,今天就是要來練習啦!!
總而言之挑了一個可以很難也可以很簡單的東西,
太久沒寫這種東西了,害我腦袋偶然間當機,
其實他還蠻考驗程式邏輯的,但我這裡只提供簡易的版本,
在此之後希望大家可以自行深入研究唷!!
總之先想辦法把介面拉出來(不知道要長怎樣的請拿出手機按出計算機)
然後把每按鍵事件先點出來,加上我們的程式碼
procedure TForm5.btn1Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+'1'; //在原有的文字+上我們的數字,並且顯示
end;
以此類推把你的1,2,3,4,5,6,7,8,9,0,+,-,x,/,通通加上去~
然後恭喜你完成了1/3的東西了
但接下來就是要考驗你的邏輯了!!
先幫我這樣做
OnShow那邊幫我點擊兩下,然後回到程式畫面
StringList是一個蠻好用的字串陣列,可以去網路上多多研究使用方法唷!!
procedure TForm5.FormShow(Sender: TObject); //當視窗顯示時執行
begin
NumL:=TStringList.Create; //啟動我們的Stringlist
end;
procedure TForm5.CalCheck; //確認是否已有運算元的存在
begin
if (Pos('+',edt1.text)>0) or //判斷位置>0就是存在
(Pos('-',edt1.text)>0) or
(Pos('*',edt1.text)>0) or
(Pos('/',edt1.text)>0)
then
NumC:=1
else
NumC:=0;
end;
procedure TForm5.CalResult;
var
num1,num2:Integer; //區域變數
begin
if (Pos('+',edt1.text)>0) then //判斷位置>0就是存在
if Pos('+',edt1.text)<>Length(edt1.Text) then //位置不在最後
NumL.Delimiter:='+'
else
edt1.Text:=Copy(edt1.Text,1,Length(edt1.Text)-1); //如果在最後則砍到最後面的運算值
if (Pos('-',edt1.text)>0) then
if Pos('-',edt1.text)<>Length(edt1.Text) then
NumL.Delimiter:='-'
else
edt1.Text:=Copy(edt1.Text,1,Length(edt1.Text)-1);
if (Pos('*',edt1.text)>0) then
if Pos('*',edt1.text)<>Length(edt1.Text) then
NumL.Delimiter:='*'
else
edt1.Text:=Copy(edt1.Text,1,Length(edt1.Text)-1);
if (Pos('/',edt1.text)>0) then
if Pos('/',edt1.text)<>Length(edt1.Text) then
NumL.Delimiter:='/'
else
edt1.Text:=Copy(edt1.Text,1,Length(edt1.Text)-1);
NumL.DelimitedText:=edt1.Text;
if (NumL.Count<2) then //判斷無第二個數值就停止
Exit;
num1:=StrToInt(NumL[0]);
num2:=StrToInt(NumL[1]);
if (Pos('+',edt1.text)>0) then
edt1.Text:=IntToStr(num1+num2);
if (Pos('-',edt1.text)>0) then
edt1.Text:=IntToStr(num1-num2);
if (Pos('*',edt1.text)>0) then
edt1.Text:=IntToStr(num1*num2);
if (Pos('/',edt1.text)>0) then
begin
edt1.Text:=FloatToStr(num1/num2);
end;
涵式成後完,把我們+-x/的按鍵事件給打開來~
procedure TForm5.btn11Click(Sender: TObject);
begin
CalCheck; //先確認
if NumC=1 then //判斷是否存在運值
begin
CalResult; //執行
end;
edt1.Text:=edt1.Text+'+';
end;
每個都給事件都補齊上去後!!
我們就大功告成啦!!!~
接下來就是F9去試試看你的簡易計算機囉!!
不曉得我這樣打和上註解有沒有人看不懂呢!?
如果看不懂的話~請在下方留言告訴我,我在添加更詳細的說明
那我們下次見囉!!See you Guys!
不過先預告一下~我可能會有一兩天中斷,
這裡要提醒你一下
鐵人賽的規則是「連續」30天
如果你中斷的話
就會從第1天開始計算